package com.smart.admin.common.request;

import com.smart.admin.common.validator.EnumValue;
import com.smart.admin.entity.Product;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.validation.annotation.Validated;

import java.util.Date;
import java.util.List;

/**
 * 优惠券信息封装，包括绑定商品和绑定分类
 *
 * @author zhangwei
 */
@Data
@Validated
public class CouponRequestParam {
    /**
     * ID
     */
    private Long id;

    /**
     * 优惠券标题（有图片则显示图片）：无门槛50元优惠券 | 单品最高减2000元
     */
    @Length(min = 2, max = 10)
    private String title;

    /**
     * 图片
     */
    private String icon;

    /**
     * 可用于：10店铺优惠券 11新人店铺券  20商品优惠券  30类目优惠券  60平台优惠券  61新人平台券
     */
    private Integer used;

    /**
     * 1满减券 2叠加满减券 3无门槛券（需要限制大小）
     */
    @EnumValue(intValues = {1, 2, 3})
    private Integer type;

    /**
     * 1可用于特价商品 2不能  默认不能(商品优惠卷除外)
     */
    private Integer withSpecial;

    /**
     * 店铺或商品流水号
     */
    private String withSn;

    /**
     * 满多少金额
     */
    private Long withAmount;

    /**
     * 用券金额
     */
    private Long usedAmount;

    /**
     * 配额：发券数量
     */
    private Integer quota;

    /**
     * 已领取的优惠券数量
     */
    private Integer takeCount;

    /**
     * 已使用的优惠券数量
     */
    private Integer usedCount;

    /**
     * 发放开始时间
     */
    private Date startTime;

    /**
     * 发放结束时间
     */
    private Date endTime;

    /**
     * 时效:1绝对时效（领取后XXX-XXX时间段有效）  2相对时效（领取后N天有效）
     */
    private Integer validType;

    /**
     * 使用开始时间
     */
    private Date validStartTime;

    /**
     * 使用结束时间
     */
    private Date validEndTime;

    /**
     * 自领取之日起有效天数
     */
    private Integer validDays;

    /**
     * 1生效 2失效 3已结束
     */
    private Integer status;
    /**
     * 创建用户
     */
    private Long createUser;
    /**
     * 更新用户信息
     */
    private Long updateUser;

    /**
     * 批次ID 同批次的可以组合使用,不同批次的不能互斥
     */
    private Long batchId;
    /**
     * 关联的商品信息
     */
    private List<Product> productList;
}
